/**
 * 录音工具集
 *
 */
class RecorderTools {

    constructor(options) {
        this.init = this._init(); //对象初始化
    }
    recorderManager = wx.getRecorderManager(); //获取全局录音管理器
    options = {
        duration: 60000, //指定录音的时长，单位 ms
        sampleRate: 44100, //采样率，有效值 8000/16000/44100
        numberOfChannels: 1, //录音通道数，有效值 1/2
        encodeBitRate: 192000, //编码码率
        format: 'aac', //音频格式，有效值 aac/mp3
        frameSize: 50 //指定帧大小，单位 KB
    }

    _init() {
        let _this = this;

        _this.showThis()
        return 'init success'
    }

    start() { //开始录音
        let _this = this;

        _this.recorderManager.start(_this.options);
        console.log('录音开始了')
    }
    pause() { //暂停录音
        let _this = this;

        _this.recorderManager.pause();
        console.log('暂停录音')
    }
    resume() { //继续录音
        let _this = this;

        _this.recorderManager.resume();
        console.log('继续录音')
    }
    stop() { //停止录音
        let _this = this;

        _this.recorderManager.stop();
        console.log('停止录音')
    }
    onStart = this.recorderManager.onStart(() => { //录音开始事件
        console.log('录音开始')
    })

    onPause = this.recorderManager.onPause(() => { //录音暂停事件
        console.log('录音暂停')
    })

    onStop = this.recorderManager.onStop(function(res) { //录音停止事件，回调文件地址
        const { tempFilePath } = res;
        console.log('录音停止，回调文件地址', tempFilePath)
    })

    onFrameRecorded = this.recorderManager.onFrameRecorded((res) => { //已录制完指定帧大小的文件，回调录音分片结果数据
        const { frameBuffer } = res
        console.log('录音分片结果数据', frameBuffer.byteLength)
    })

    onError = this.recorderManager.onError((err) => { //录音错误事件，回调录音错误信息
        console.log('录音错误', err)
    })

    showThis() {
        console.log('showThis', this)
    }
}

module.exports = new RecorderTools();